package com.acmen.ump.core.util;

import org.apache.commons.lang3.RandomStringUtils;
import org.springframework.util.DigestUtils;

/**
 * @author Acmen
 * @ClassName MD5Util.java
 * @Description TODO
 * @CreateTime 2019年08月27日 23:26:04
 */
public class MD5Util {
    /**
     * 生成md5
     * 使用md5加盐加密后用md5二次加密
     * @param
     * @return
     */
    public static String getMD5(String str,String salt) {
        String base = str + "/" + salt;
        String md5 = DigestUtils.md5DigestAsHex(base.getBytes());

        char[] cs = new char[48];
        for (int i = 0; i < 48; i += 3) {
            cs[i] = md5.charAt(i / 3 * 2);
            char c = salt.charAt(i / 3);
            cs[i + 1] = c;
            cs[i + 2] = md5.charAt(i / 3 * 2 + 1);
        }
        return DigestUtils.md5DigestAsHex(String.valueOf(cs).getBytes());
    }

    /**
     * 生成16位的随机盐
     *
     * @return String 随机的加密盐
     */
    public static String getSalt() {
        // 生成一个16位的随机字符串
        return RandomStringUtils.randomAlphanumeric(16);
    }
}
